package fr.pascal.dao;

import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import fr.pascal.entities.Abonnement;

public class AbonnementDaoImpl implements IAbonnementDao {

	@PersistenceContext
	private EntityManager em;

	public void addAbonnement(Abonnement ab) {
		em.persist(ab);
	}

	public List<Abonnement> listeAbonnements(boolean actif) {
		Query query = em.createQuery("select ab from Abonnement ab where ab.actif = :x");
		query.setParameter("x", actif);
		return query.getResultList();
	}

	public List<Abonnement> listeAbonnement(Date d1, Date d2) {
		Query query = em.createQuery("select ab from Abonnement ab where ab.dateAbonnement between :d1 and :d2");
		query.setParameter("d1", d1);
		query.setParameter("d2", d2);
		return query.getResultList();
	}

	public Abonnement getAbonnement(Long idAbo) {
		return em.find(Abonnement.class, idAbo);
	}

	public void deleteAbonnement(Long idAbo) {
		Abonnement abo = getAbonnement(idAbo);
		em.remove(abo);
	}

	public void updateAbonnement(Abonnement abo) {
		em.merge(abo);
	}

	public void consommer(Long idAbo, double mnt) {
		Abonnement abo = getAbonnement(idAbo);
		abo.setSolde(abo.getSolde() - mnt);
	}
}
